36 class defNestedFuncExpr;
53 const node* getSubPack()
const BY_CONST_FUNC(getSubPack())
56 const srcSupplies& getSrcSupplies()
const BY_CONST_FUNC(getSrcSupplies())
61 std::vector<ncnt>& getIndents();
65 template <
typename T>
void setScan() {
66 BY_DI(
"change scanmode(%s -> %s)", _mode ? _mode->getType().getName() :
"null", *T::_instance);
72 int pushState(
int newState);
77 using tokenScanable::onScan;
78 nint onScan(
parser& ps, YYSTYPE* val, YYLTYPE* loc, yyscan_t scanner, nbool& isBypass)
override;
79 nint onTokenEndOfFile();
80 nint onTokenColon(nint tok);
81 nint onTokenNewLine(nint tok);
82 nint onTokenLParan(nint tok);
83 nint onTokenRParan(nint tok);
84 nint onTokenComma(nint tok);
85 nbool onTokenEndOfBraces();
86 void onTokenStartOfStrTemplateBrace();
87 nint onIndent(ncnt col, nint tok);
88 nint onDedent(ncnt col, nint tok);
89 nint onIgnoreIndent(nint tok);
90 nchar onScanUnexpected(
const nchar* token);
96 node* onGet(
const std::string& name);
98 node* onGet(
node& from,
const std::string& name);
100 node* onGet(
const std::string& name,
const std::string& name2);
110 FUOExpr* onUnaryPostfixDoubleMinus(
const node& it);
142 node* onGetGeneric(
const std::string& orgName,
const args& typeParams);
149 obj* onPack(
const std::string& path);
151 obj* onSubPack(
obj& subpack);
165 node* onParanthesisAsTuple(
narr& tuple);
169 args* onFuncCallTuple();
170 args* onFuncCallTuple(
const node& elem);
177 template <
typename T,
typename Arg> T* onPrimitive(
const Arg& arg) {
182 template <
typename T> T* onPrimitive() {
187 node* onDefProp(
const modifier& mod,
const std::string& name,
const node& rhs);
188 node* onDefProp(
const std::string& name,
const node& rhs);
191 node* onDefAssign(
const modifier& mod,
const std::string& name,
const node* rhs);
193 node* onDefAssign(
const std::string& name,
const node* rhs);
195 obj* onDefOrigin(
const std::string& name,
defBlock& blk);
201 node* onDefArray(
const narr& items);
204 void onCompilationUnit(
obj* subpack);
205 void onCompilationUnit(
obj* subpack,
defBlock* blk);
223 modifier* onModifier(nbool isPublic, nbool isOverriden);
226 node* onDeclStmt(
const narr& dotnames) {
251 void onParseErr(
const std::string& msg,
const nchar* symbolName);
254 void* _scanString(
const std::string&
src,
void* scanner);
256 void _prepare()
override;
257 void _onEndWork()
override;
266 nint _onTokenEndOfInlineBlock(nint tok);
272 nint _onScan(YYSTYPE* val, YYLTYPE* loc, yyscan_t scanner);
278 std::vector<std::string> _extractParamTypeNames(
const args& types);
279 std::string _joinVectorString(
const std::vector<std::string>& container)
const;
280 const node& _onDefArrayType(
const narr& items);
281 std::vector<std::string> _toDotnames(
const node& path);
282 void _onCompilationUnit(
obj* subpack,
defBlock* blk);
287 nbool _isIgnoreWhitespace;
289 std::vector<ncnt> _indents;
292 std::vector<nint> _states;
296 std::vector<func*> _funcs;
297 ncnt _strTemplateCnt;
Fundamental Binary Operation expression.
Definition: FBOExpr.hpp:17
Fundamental Unary Operation expression.
Definition: FUOExpr.hpp:17
Function call arguments container.
Definition: args.hpp:13
Managed array container for byeol language.
Definition: arr.hpp:14
Type casting expression.
Definition: asExpr.hpp:16
Base class for all error types.
Definition: baseErr.hpp:12
Block expression containing multiple statements.
Definition: blockExpr.hpp:15
Break statement expression.
Definition: breakExpr.hpp:19
Constructor function for byeol objects.
Definition: ctor.hpp:11
Definition block for organizing object definitions.
Definition: defBlock.hpp:15
Nested func definition expression (lambda)
Definition: defNestedFuncExpr.hpp:13
Property definition expression.
Definition: defPropExpr.hpp:11
End blockExpr for function cleanup.
Definition: endExpr.hpp:11
Deferred execution utility like defer keyword in other languages.
Definition: end.hpp:14
Base class for all expressions.
Definition: expr.hpp:15
Factory for creating expressions with source location information.
Definition: exprMaker.hpp:17
Function definition in byeol language.
Definition: func.hpp:20
Generic type origin with type parameters.
Definition: genericOrigin.hpp:15
Expression for property and method access.
Definition: getExpr.hpp:17
If conditional expression.
Definition: ifExpr.hpp:13
ntype checking expression
Definition: isExpr.hpp:11
Access modifier for class members and func.
Definition: modifier.hpp:12
Continue statement expression.
Definition: nextExpr.hpp:19
Base class for all AST nodes in byeol language.
Definition: node.hpp:30
Managed object in byeol programming environment.
Definition: obj.hpp:19
Function parameter definition.
Definition: param.hpp:13
Function parameter list container.
Definition: params.hpp:15
Parser for byeol language source code.
Definition: parser.hpp:43
Return statement expression.
Definition: retExpr.hpp:14
Function/method call expression.
Definition: runExpr.hpp:14
Smart indentation management for code parsing.
Definition: smartDedent.hpp:10
Source location information.
Definition: src.hpp:11
Source code supply interface.
Definition: srcSupply.hpp:15
Token queue management for parser.
Definition: tokenDispatcher.hpp:13
Base class for token scanning strategies.
Definition: tokenScan.hpp:19
Interface for token scanning functionality.
Definition: tokenScanable.hpp:18
Template type wrapper for type metadata management.
Definition: ttype.hpp:16
Base class for runtime type information in byeol language.
Definition: type.hpp:12
Base worker template for processing tasks.
Definition: worker.hpp:28
Source code area tracking structure.
Definition: point.hpp:27