Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested macro parsing #1550

Closed
Kochise opened this issue Sep 3, 2018 · 6 comments
Closed

Nested macro parsing #1550

Kochise opened this issue Sep 3, 2018 · 6 comments
Labels

Comments

@Kochise
Copy link
Contributor

Kochise commented Sep 3, 2018

  • cxx plugin version: sonar-cxx-plugin-1.1.0
  • SonarQube version: sonarqube-7.2.1

l_psTaskCurr[0]
= mOSS_EXE_TASK
( .sStack
= mEGOS_EXE_TASK__STACK
( .panSp
= (pnU32)
__PTR
( __INT(l_panStack)
#if (dOSS_EXE_TASK__CFG__STACK_DOWN == 1)
+ dOSS_EXE_TASK__CFG__STACK_SIZE
- sizeof(pVoid)
#endif // (dOSS_EXE_TASK__CFG__STACK_DOWN == 1)
)
, .panBase = l_panStack
, .nSize = dOSS_EXE_TASK__CFG__STACK_SIZE
)
, .sState
= mEGOS_EXE_TASK__STATE
( .ePrev = eOSS_EXE_TASK__STATE__RUN
, .eCurr = eOSS_EXE_TASK__STATE__RUN
)
, .sTime
= mEGOS_EXE_TASK__TIME
( .nPrev = 0
, .nWait = 0
)
#if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1)
, .nPriority = cOSS_EXE_TASK__CFG__PRIORITY
#endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1)
#if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1)
, .sProfiler = { 0 }
#endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1)
);

(markdown formatting is baaaaad)

Related sonarqube error :

14:08:04.414 ERROR - MismatchException : 'Mismatch: expected ')' got: '.' [tests://unittest(1,639)]' rest: '[DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_panStack, BR_RIGHT: ), PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__STACK_DOWN == 1) + dOSS_EXE_TASK__CFG__STACK_SIZE - sizeof ( pVoid ) #endif // (dOSS_EXE_TASK__CFG__STACK_DOWN == 1) ) , . panBase = l_panStack , . nSize = dOSS_EXE_TASK__CFG__STACK_SIZE ),. sState = mEGOS_EXE_TASK__STATE ( . ePrev = eOSS_EXE_TASK__STATE__RUN , . eCurr = eOSS_EXE_TASK__STATE__RUN ),. sTime = mEGOS_EXE_TASK__TIME ( . nPrev = 0 , . nWait = 0 ) #if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1),. nPriority = cOSS_EXE_TASK__CFG__PRIORITY #endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1) #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1),. sProfiler = { 0 } #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), EOF: EOF]'

-> The parsing problem is in bold. Looks like PREPROCESSOR isn't parsed correctly and include the next line, despite using C++ comment style.

Related sonarqube error (same code) :

14:08:04.415 ERROR - MismatchException : 'Mismatch: expected ')' got: '__INT' [tests://unittest(1,667)]' rest: '[IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_panStack, BR_RIGHT: ), PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__STACK_DOWN == 1) + dOSS_EXE_TASK__CFG__STACK_SIZE - sizeof ( pVoid ) #endif // (dOSS_EXE_TASK__CFG__STACK_DOWN == 1) ) , . panBase = l_panStack , . nSize = dOSS_EXE_TASK__CFG__STACK_SIZE ),. sState = mEGOS_EXE_TASK__STATE ( . ePrev = eOSS_EXE_TASK__STATE__RUN , . eCurr = eOSS_EXE_TASK__STATE__RUN ),. sTime = mEGOS_EXE_TASK__TIME ( . nPrev = 0 , . nWait = 0 ) #if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1),. nPriority = cOSS_EXE_TASK__CFG__PRIORITY #endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1) #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1),. sProfiler = { 0 } #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), EOF: EOF]'

-> Now the PREPROCESSOR embed even more data.

Related sonarqube error (same code) :

14:08:04.416 ERROR - Undefined functionlike macro 'sizeof' assuming 0

-> Confused sonarqube is confused, it's super effective

Related sonarqube error (same code) :

14:08:04.417 ERROR - MismatchException : 'Mismatch: expected ')' got: '.' [tests://unittest(1,1454)]' rest: '[DOT: ., IDENTIFIER: sStack, ASSIGN: =, IDENTIFIER: mEGOS_EXE_TASK__STACK, BR_LEFT: (, DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), IDENTIFIER: __PTR, BR_LEFT: (, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: nS32, BR_RIGHT: ), IDENTIFIER: l_panStack, BR_RIGHT: ), BR_RIGHT: ), EOF: EOF]'

-> digesting is getting harder and harder

Related sonarqube error (same code) :

14:08:04.422 ERROR - MismatchException : 'Mismatch: expected ')' got: '.' [tests://unittest(1,1489)]' rest: '[DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), IDENTIFIER: __PTR, BR_LEFT: (, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: nS32, BR_RIGHT: ), IDENTIFIER: l_panStack, BR_RIGHT: ), BR_RIGHT: ), EOF: EOF]'

-> squeezing the drop

Related sonarqube error (same code, not the last but not the least either) :

14:08:04.424 ERROR - MismatchException : 'Mismatch: expected ')' got: '.' [tests://unittest(1,1454)]' rest: '[DOT: ., IDENTIFIER: sStack, ASSIGN: =, IDENTIFIER: mEGOS_EXE_TASK__STACK, BR_LEFT: (, DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), BR_LEFT: (, BR_LEFT: (, IDENTIFIER: pVoid, BR_RIGHT: ), BR_LEFT: (, BR_LEFT: (, IDENTIFIER: nS32, BR_RIGHT: ), BR_LEFT: (, BR_LEFT: (, IDENTIFIER: nS32, BR_RIGHT: ), IDENTIFIER: l_panStack, BR_RIGHT: ), BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: l_bProc, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sProc, ASSIGN: =, IDENTIFIER: mOSS_EXE_PROC, BR_LEFT: (, DOT: ., IDENTIFIER: psThis, ASSIGN: =, IDENTIFIER: l_psTaskCurr, COMMA: ,, DOT: ., IDENTIFIER: psCurr, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: psParent, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: psChild, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: bRunning, ASSIGN: =, TRUE: true, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, PREPROCESSOR: #if 1, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, SQBR_LEFT: [, NUMBER: 0, SQBR_RIGHT: ], SEMICOLON: ;, PREPROCESSOR: #else // 0, ASSIGN: =, IDENTIFIER: mOSS_EXE__API_PROC, BR_LEFT: (, DOT: ., IDENTIFIER: i_pacnName, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnName, COMMA: ,, DOT: ., IDENTIFIER: i_pacnVersion, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnVersion, COMMA: ,, DOT: ., IDENTIFIER: i_sKey, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sKey, COMMA: ,, DOT: ., IDENTIFIER: i_sGuard, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sGuard, COMMA: ,, DOT: ., IDENTIFIER: i_sPerm, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sPerm, COMMA: ,, DOT: ., IDENTIFIER: i_sNode, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sNode, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #endif // 0, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: sApi, DOT: ., IDENTIFIER: i_psProc, ASSIGN: =, BW_AND: &, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, CURLBR_RIGHT: }, ELSE: else, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_pacnName, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnName, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnName, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnStr_Os, BR_RIGHT: ), IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), PLUS: +, SIZEOF: sizeof, BR_LEFT: (, IDENTIFIER: sOssExeProc_Task, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_pacnName, ASSIGN: =, IDENTIFIER: utl_str_Cpy, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnName, BR_RIGHT: ), COMMA: ,, DOT: ., IDENTIFIER: i_pacnSrc, ASSIGN: =, IDENTIFIER: l_pacnName, COMMA: ,, DOT: ., IDENTIFIER: i_nSize, ASSIGN: =, IDENTIFIER: l_nIndex, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnVersion, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnVersion, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnStr_Os, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_pacnName, PLUS: +, NUMBER: 1, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_nIndex, MINUS_ASSIGN: -=, BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnVersion, BR_RIGHT: ), MINUS: -, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnName, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_pacnName, ASSIGN: =, IDENTIFIER: utl_str_Cpy, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnVersion, BR_RIGHT: ), COMMA: ,, DOT: ., IDENTIFIER: i_pacnSrc, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnVersion, COMMA: ,, DOT: ., IDENTIFIER: i_nSize, ASSIGN: =, IDENTIFIER: l_nIndex, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, BR_RIGHT: ), CURLBR_LEFT: {, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_psTaskCurr, ASSIGN: =, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, IDENTIFIER: i_psParent, ASSIGN: =, IDENTIFIER: NULL, SEMICOLON: ;, WHILE: while, BR_LEFT: (, TRUE: true, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psParent, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, BREAK: break, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: nPriority, GT: >, IDENTIFIER: cOSS_EXE_TASK__CFG__PRIORITY, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psParent, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: i_psParent, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: i_psParent, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psTaskCurr, ASSIGN: =, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: psNext, SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #else // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: sChild, DOT: ., IDENTIFIER: psTail, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: sChild, DOT: ., IDENTIFIER: psTail, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: FOR_EACH, BR_LEFT: (, IDENTIFIER: l_nIndex, COMMA: ,, IDENTIFIER: dOSS_EXE_TASK__CFG__STACK_SIZE, DIV: /, SIZEOF: sizeof, BR_LEFT: (, IDENTIFIER: nU32, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_panStack, SQBR_LEFT: [, IDENTIFIER: l_nIndex, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: cOSS_EXE_TASK__CFG__STACK_INIT, SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: mcu_cpu_pendsv_Setup, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panSp, BR_RIGHT: ), COMMA: ,, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_pfMain, BR_RIGHT: ), COMMA: ,, IDENTIFIER: __PTR, BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: This, BR_RIGHT: ), COMMA: ,, IDENTIFIER: __PTR, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_nIndex, ASSIGN: =, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_SetSp, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panSp, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_SetPc, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_pfMain, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #if 0, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Long, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, NUMBER: 2, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), PREPROCESSOR: #endif // 0, PREPROCESSOR: #if 0, IF: if, BR_LEFT: (, IDENTIFIER: toto, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panAddr, BR_RIGHT: ), CURLBR_LEFT: {, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: oss_mem_Cpy, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pVoid, BR_RIGHT: ), BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, DOT: ., IDENTIFIER: i_pacnSrc, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pcVoid, BR_RIGHT: ), BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, DOT: ., IDENTIFIER: i_nSize, ASSIGN: =, SIZEOF: sizeof, BR_LEFT: (, IDENTIFIER: sMcuCpuJmp_Buf, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // 0, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: l_psProcPrev, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: mpOSS_EXE_RTOS, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psProcCurr, ASSIGN: =, BW_AND: &, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sProc, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: l_uResult, ASSIGN: =, IDENTIFIER: cERR__CODE__OK, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: oss_mem_Free, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, RETURN: return, IDENTIFIER: __CAST, BR_LEFT: (, IDENTIFIER: uErr_Code, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_uResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, IDENTIFIER: uErr_Code, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psEgosExe_This, IDENTIFIER: i_psThis, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: uErr_Code, IDENTIFIER: l_uResult, SEMICOLON: ;, IDENTIFIER: sEgosExe_This, IDENTIFIER: l_sThis, SEMICOLON: ;, IDENTIFIER: psOssExeProc_Task, IDENTIFIER: l_psTask, SEMICOLON: ;, IDENTIFIER: psOssExeProc_Task, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: cOSS_EXE_TASK__CFG__SEARCH_DEPTH, SQBR_RIGHT: ], SEMICOLON: ;, IDENTIFIER: nS32, IDENTIFIER: l_nLevel, SEMICOLON: ;, IDENTIFIER: l_uResult, ASSIGN: =, IDENTIFIER: cERR__CODE__NOK, SEMICOLON: ;, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psThis, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_nLevel, ASSIGN: =, NUMBER: 0, SEMICOLON: ;, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: mOSS_EXE_TASK__BUFFER_FROM_HANDLE, BR_LEFT: (, IDENTIFIER: i_psThis, ARROW: ->, IDENTIFIER: i_chCurrent, BR_RIGHT: ), SEMICOLON: ;, DO: do, CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalEnter, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_task_Suspend, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: sApi, DOT: ., IDENTIFIER: i_psProc, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sProc, DOT: ., IDENTIFIER: bRunning, ASSIGN: =, FALSE: false, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: l_psTask, ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: psChild, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_nLevel, PLUS_ASSIGN: +=, NUMBER: 1, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: cOSS_EXE_TASK__CFG__SEARCH_DEPTH, GT: >, IDENTIFIER: l_nLevel, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: l_psTask, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_sThis, DOT: ., IDENTIFIER: i_chCurrent, ASSIGN: =, IDENTIFIER: mOSS_EXE_TASK__HANDLE_FROM_BUFFER, BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sTask, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_uResult, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_sThis, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: psNext, SEMICOLON: ;, IDENTIFIER: oss_mem_blck_Flush, BR_LEFT: (, DOT: ., IDENTIFIER: i_psTask, ASSIGN: =, BW_AND: &, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: oss_mem_Free, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: sStack, DOT: ., IDENTIFIER: panBase, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: oss_mem_Free, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: l_psTask, SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_nLevel, MINUS_ASSIGN: -=, NUMBER: 1, SEMICOLON: ;, IF: if, BR_LEFT: (, NUMBER: 0, LT_EQ: <=, IDENTIFIER: l_nLevel, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: psNext, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalLeave, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, WHILE: while, BR_LEFT: (, NUMBER: 0, LT: <, IDENTIFIER: l_nLevel, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_uResult, ASSIGN: =, IDENTIFIER: cERR__CODE__OK, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, RETURN: return, IDENTIFIER: __CAST, BR_LEFT: (, IDENTIFIER: uErr_Code, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_uResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #if 0, IDENTIFIER: nU32, BR_LEFT: (, IDENTIFIER: oss_exe_proc_TaskAdd, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: pfVoid_Void, IDENTIFIER: i_pfMain, COMMA: ,, IDENTIFIER: nU32, IDENTIFIER: i_nPeriod, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: nU32, IDENTIFIER: l_nResult, SEMICOLON: ;, IDENTIFIER: nU32, IDENTIFIER: l_nTaskId, SEMICOLON: ;, IDENTIFIER: nF32, IDENTIFIER: l_nDelay, SEMICOLON: ;, IDENTIFIER: l_nResult, ASSIGN: =, NUMBER: 0, SEMICOLON: ;, IDENTIFIER: l_nDelay, ASSIGN: =, BR_LEFT: (, IDENTIFIER: nF32, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: i_nPeriod, MUL: *, IDENTIFIER: mpOSS_EXE_PROC__CHEST, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: nCountPerMs, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: l_nDelay, LT: <, IDENTIFIER: F32, BR_LEFT: (, NUMBER: 1.0, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_nDelay, ASSIGN: =, IDENTIFIER: F32, BR_LEFT: (, NUMBER: 1.0, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: mpOSS_EXE_PROC__CHEST, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: asTasks, SQBR_LEFT: [, IDENTIFIER: l_nTaskId, SQBR_RIGHT: ], DOT: ., IDENTIFIER: nPeriod, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC__CHEST, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: asTasks, SQBR_LEFT: [, IDENTIFIER: l_nTaskId, SQBR_RIGHT: ], DOT: ., IDENTIFIER: nDelay, ASSIGN: =, BR_LEFT: (, IDENTIFIER: utl_num_math_rnd_Floor, BR_LEFT: (, DOT: ., IDENTIFIER: i_nX, ASSIGN: =, IDENTIFIER: l_nDelay, PLUS: +, NUMBER: 95, BR_RIGHT: ), LT: <, IDENTIFIER: l_nDelay, BR_RIGHT: ), QUEST: ?, IDENTIFIER: utl_num_math_rnd_Ceil, BR_LEFT: (, DOT: ., IDENTIFIER: i_nX, ASSIGN: =, IDENTIFIER: l_nDelay, BR_RIGHT: ), COLON: :, IDENTIFIER: utl_num_math_rnd_Floor, BR_LEFT: (, DOT: ., IDENTIFIER: i_nX, ASSIGN: =, IDENTIFIER: l_nDelay, BR_RIGHT: ), SEMICOLON: ;, RETURN: return, IDENTIFIER: __CAST, BR_LEFT: (, IDENTIFIER: nU32, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_nResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // 0, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_DelayMs, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, COMMA: ,, IDENTIFIER: nU32, IDENTIFIER: i_nDelay, BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_task_DelayUs, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: i_psTask, COMMA: ,, IDENTIFIER: i_nDelay, MUL: *, NUMBER: 1000, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_DelayUs, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, COMMA: ,, IDENTIFIER: nU32, IDENTIFIER: i_nDelay, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: psOssExeTask, IDENTIFIER: l_psTask, SEMICOLON: ;, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, NUMBER: 0, NOT_EQ: !=, IDENTIFIER: i_nDelay, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: i_psTask, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalEnter, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalLeave, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nPrev, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nWait, ASSIGN: =, BR_LEFT: (, IDENTIFIER: nOssExeTimr, BR_RIGHT: ), IDENTIFIER: i_nDelay, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: eOSS_EXE_TASK__STATE__DELAY, SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: oss_exe_task_Switch, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, IDENTIFIER: bB1, BR_LEFT: (, IDENTIFIER: oss_exe_task_IsDelayed, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: bB1, IDENTIFIER: l_bResult, SEMICOLON: ;, IDENTIFIER: l_bResult, ASSIGN: =, FALSE: false, SEMICOLON: ;, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_bResult, ASSIGN: =, BR_LEFT: (, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), MINUS: -, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nPrev, BR_RIGHT: ), GT_EQ: >=, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nWait, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, RETURN: return, IDENTIFIER: CAST, BR_LEFT: (, IDENTIFIER: bB1, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_bResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Suspend, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__SUSPEND, NOT_EQ: !=, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: ePrev, ASSIGN: =, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, SEMICOLON: ;, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: eOSS_EXE_TASK__STATE__SUSPEND, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Resume, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__SUSPEND, EQ: ==, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: ePrev, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Schedule, BR_RIGHT: ), BR_LEFT: (, VOID: void, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: psOssExeTask, IDENTIFIER: l_psTask, SEMICOLON: ;, IDENTIFIER: bB1, IDENTIFIER: l_bRun, SEMICOLON: ;, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: bRunning, ASSIGN: =, TRUE: true, SEMICOLON: ;, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: FOR_EACH_PTR, BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, COMMA: ,, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: psNext, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, ASSIGN: =, IDENTIFIER: mOSS_EXE_TASK__PROF, BR_LEFT: (, DOT: ., IDENTIFIER: nTime, ASSIGN: =, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTime, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), COMMA: ,, DOT: ., IDENTIFIER: nTimePre, ASSIGN: =, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, COMMA: ,, DOT: ., IDENTIFIER: nDeltaMin, ASSIGN: =, NUMBER: 0xFFFFFFFF, COMMA: ,, DOT: ., IDENTIFIER: nDeltaMax, ASSIGN: =, NUMBER: 0, COMMA: ,, DOT: ., IDENTIFIER: nDeltaAvg, ASSIGN: =, NUMBER: 0, COMMA: ,, DOT: ., IDENTIFIER: nSwitchCnt, ASSIGN: =, NUMBER: 0, COMMA: ,, DOT: ., IDENTIFIER: bFirst, ASSIGN: =, TRUE: true, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, WHILE: while, BR_LEFT: (, TRUE: true, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, FALSE: false, SEMICOLON: ;, BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), BR_RIGHT: ), SQBR_LEFT: [, NUMBER: 0, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: l_psTask, SEMICOLON: ;, SWITCH: switch, BR_LEFT: (, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), CURLBR_LEFT: {, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__RUN, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, TRUE: true, SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__DELAY, COLON: :, CURLBR_LEFT: {, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, BR_LEFT: (, IDENTIFIER: oss_exe_task_IsDelayed, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: eOSS_EXE_TASK__STATE__RUN, SEMICOLON: ;, IDENTIFIER: l_bRun, ASSIGN: =, TRUE: true, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #if (dOSS_MSG__CFG__USE_EVENT == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__EVNT, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__EVNT_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_evnt_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__EVNT_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_EVENT == 1), PREPROCESSOR: #if (dOSS_MSG__CFG__USE_SEMAPHORE == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__SEMA, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__SEMA_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_sema_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__SEMA_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_SEMAPHORE == 1), PREPROCESSOR: #if (dOSS_MSG__CFG__USE_MUTEX == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__MUTX, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__MUTX_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_mutx_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__MUTX_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_MUTEX == 1), PREPROCESSOR: #if (dOSS_MSG__CFG__USE_LIST == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOEMP, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOEMP_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_list_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOEMP_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, COMMA: ,, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOFUL, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOFUL_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_list_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOFUL_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, COMMA: ,, TRUE: true, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_LIST == 1), DEFAULT: default, COLON: :, CURLBR_LEFT: {, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: l_bRun, BR_RIGHT: ), CURLBR_LEFT: {, DO: do, CURLBR_LEFT: {, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: nOssExeTimr, IDENTIFIER: l_nTimePre, SEMICOLON: ;, IDENTIFIER: l_nTimePre, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), IDENTIFIER: nOssExeTimr, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: bFirst, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: bFirst, ASSIGN: =, FALSE: false, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, ASSIGN: =, IDENTIFIER: l_nTimePre, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_nTimeDelta, ASSIGN: =, IDENTIFIER: l_nTimePre, MINUS: -, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, ASSIGN: =, IDENTIFIER: l_nTimePre, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaAvg, PLUS_ASSIGN: +=, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nSwitchCnt, PLUS_ASSIGN: +=, NUMBER: 1, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMin, GT: >, IDENTIFIER: l_nTimeDelta, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMin, ASSIGN: =, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, IF: if, BR_LEFT: (, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMax, LT: <, IDENTIFIER: l_nTimeDelta, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMax, ASSIGN: =, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IF: if, BR_LEFT: (, NUMBER: 0, EQ: ==, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Long, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, NUMBER: 1, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTime, PLUS_ASSIGN: +=, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), MINUS: -, IDENTIFIER: l_nTimePre, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), CURLBR_RIGHT: }, WHILE: while, BR_LEFT: (, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, PREPROCESSOR: #else // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_bRun, ASSIGN: =, FALSE: false, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, FALSE: false, EQ: ==, IDENTIFIER: l_bRun, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: psNext, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: l_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Switch, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalEnter, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: bRunning, BR_RIGHT: ), PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_INTERRUPT == 1), AND: &&, BR_LEFT: (, NUMBER: 0, EQ: ==, IDENTIFIER: mpOSS_EXE_RTOS, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCritical, DOT: ., IDENTIFIER: nCount, BR_RIGHT: ), PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_INTERRUPT == 1), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalLeave, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, NUMBER: 0, EQ: ==, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Long, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, NUMBER: 1, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, PREPROCESSOR: #if defined(EGOS_SRC_INC_ITOR), PREPROCESSOR: #include "oss_exe_task_demo.c", PREPROCESSOR: #include "oss_exe_task_prof.c", PREPROCESSOR: #endif // defined(EGOS_SRC_INC_ITOR), EOF: EOF]'

-> Should I explain ?

Related sonarqube error (same code, the last one) :

14:08:04.431 ERROR - MismatchException : 'Mismatch: expected ')' got: '.' [tests://unittest(1,1489)]' rest: '[DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), BR_LEFT: (, BR_LEFT: (, IDENTIFIER: pVoid, BR_RIGHT: ), BR_LEFT: (, BR_LEFT: (, IDENTIFIER: nS32, BR_RIGHT: ), BR_LEFT: (, BR_LEFT: (, IDENTIFIER: nS32, BR_RIGHT: ), IDENTIFIER: l_panStack, BR_RIGHT: ), BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: l_bProc, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sProc, ASSIGN: =, IDENTIFIER: mOSS_EXE_PROC, BR_LEFT: (, DOT: ., IDENTIFIER: psThis, ASSIGN: =, IDENTIFIER: l_psTaskCurr, COMMA: ,, DOT: ., IDENTIFIER: psCurr, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: psParent, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: psChild, ASSIGN: =, IDENTIFIER: NULL, COMMA: ,, DOT: ., IDENTIFIER: bRunning, ASSIGN: =, TRUE: true, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, PREPROCESSOR: #if 1, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, SQBR_LEFT: [, NUMBER: 0, SQBR_RIGHT: ], SEMICOLON: ;, PREPROCESSOR: #else // 0, ASSIGN: =, IDENTIFIER: mOSS_EXE__API_PROC, BR_LEFT: (, DOT: ., IDENTIFIER: i_pacnName, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnName, COMMA: ,, DOT: ., IDENTIFIER: i_pacnVersion, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnVersion, COMMA: ,, DOT: ., IDENTIFIER: i_sKey, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sKey, COMMA: ,, DOT: ., IDENTIFIER: i_sGuard, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sGuard, COMMA: ,, DOT: ., IDENTIFIER: i_sPerm, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sPerm, COMMA: ,, DOT: ., IDENTIFIER: i_sNode, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_sNode, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #endif // 0, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: sApi, DOT: ., IDENTIFIER: i_psProc, ASSIGN: =, BW_AND: &, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, CURLBR_RIGHT: }, ELSE: else, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_pacnName, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnName, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnName, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnStr_Os, BR_RIGHT: ), IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), PLUS: +, SIZEOF: sizeof, BR_LEFT: (, IDENTIFIER: sOssExeProc_Task, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_pacnName, ASSIGN: =, IDENTIFIER: utl_str_Cpy, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnName, BR_RIGHT: ), COMMA: ,, DOT: ., IDENTIFIER: i_pacnSrc, ASSIGN: =, IDENTIFIER: l_pacnName, COMMA: ,, DOT: ., IDENTIFIER: i_nSize, ASSIGN: =, IDENTIFIER: l_nIndex, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnVersion, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_pacnName, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnVersion, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnStr_Os, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_pacnName, PLUS: +, NUMBER: 1, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_nIndex, MINUS_ASSIGN: -=, BR_LEFT: (, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnVersion, BR_RIGHT: ), MINUS: -, IDENTIFIER: __INT, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnName, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_pacnName, ASSIGN: =, IDENTIFIER: utl_str_Cpy, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sApiProc, DOT: ., IDENTIFIER: i_pacnVersion, BR_RIGHT: ), COMMA: ,, DOT: ., IDENTIFIER: i_pacnSrc, ASSIGN: =, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_psProc, ARROW: ->, IDENTIFIER: i_pacnVersion, COMMA: ,, DOT: ., IDENTIFIER: i_nSize, ASSIGN: =, IDENTIFIER: l_nIndex, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, BR_RIGHT: ), CURLBR_LEFT: {, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_psTaskCurr, ASSIGN: =, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, IDENTIFIER: i_psParent, ASSIGN: =, IDENTIFIER: NULL, SEMICOLON: ;, WHILE: while, BR_LEFT: (, TRUE: true, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psParent, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, BREAK: break, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: nPriority, GT: >, IDENTIFIER: cOSS_EXE_TASK__CFG__PRIORITY, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psParent, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: i_psParent, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: i_psParent, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psTaskCurr, ASSIGN: =, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: psNext, SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #else // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: sChild, DOT: ., IDENTIFIER: psTail, ARROW: ->, IDENTIFIER: psNext, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: sChild, DOT: ., IDENTIFIER: psTail, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_psProcPrev, ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, ASSIGN: =, IDENTIFIER: l_psTaskCurr, SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: FOR_EACH, BR_LEFT: (, IDENTIFIER: l_nIndex, COMMA: ,, IDENTIFIER: dOSS_EXE_TASK__CFG__STACK_SIZE, DIV: /, SIZEOF: sizeof, BR_LEFT: (, IDENTIFIER: nU32, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_panStack, SQBR_LEFT: [, IDENTIFIER: l_nIndex, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: cOSS_EXE_TASK__CFG__STACK_INIT, SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panSp, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pnU32, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: mcu_cpu_pendsv_Setup, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panSp, BR_RIGHT: ), COMMA: ,, IDENTIFIER: __PTR, BR_LEFT: (, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_pfMain, BR_RIGHT: ), COMMA: ,, IDENTIFIER: __PTR, BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: This, BR_RIGHT: ), COMMA: ,, IDENTIFIER: __PTR, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_nIndex, ASSIGN: =, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_SetSp, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panSp, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_SetPc, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, IDENTIFIER: i_psApiTask, ARROW: ->, IDENTIFIER: i_pfMain, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #if 0, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Long, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, NUMBER: 2, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), PREPROCESSOR: #endif // 0, PREPROCESSOR: #if 0, IF: if, BR_LEFT: (, IDENTIFIER: toto, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sStack, DOT: ., IDENTIFIER: panAddr, BR_RIGHT: ), CURLBR_LEFT: {, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: oss_mem_Cpy, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pVoid, BR_RIGHT: ), BW_AND: &, IDENTIFIER: l_psTaskCurr, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, DOT: ., IDENTIFIER: i_pacnSrc, ASSIGN: =, BR_LEFT: (, IDENTIFIER: pcVoid, BR_RIGHT: ), BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, DOT: ., IDENTIFIER: i_nSize, ASSIGN: =, SIZEOF: sizeof, BR_LEFT: (, IDENTIFIER: sMcuCpuJmp_Buf, BR_RIGHT: ), BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // 0, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: l_psProcPrev, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: mpOSS_EXE_RTOS, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psProcCurr, ASSIGN: =, BW_AND: &, IDENTIFIER: l_psProcCurr, ARROW: ->, IDENTIFIER: sProc, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: l_uResult, ASSIGN: =, IDENTIFIER: cERR__CODE__OK, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: oss_mem_Free, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: l_psTaskCurr, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, RETURN: return, IDENTIFIER: __CAST, BR_LEFT: (, IDENTIFIER: uErr_Code, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_uResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, IDENTIFIER: uErr_Code, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psEgosExe_This, IDENTIFIER: i_psThis, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: uErr_Code, IDENTIFIER: l_uResult, SEMICOLON: ;, IDENTIFIER: sEgosExe_This, IDENTIFIER: l_sThis, SEMICOLON: ;, IDENTIFIER: psOssExeProc_Task, IDENTIFIER: l_psTask, SEMICOLON: ;, IDENTIFIER: psOssExeProc_Task, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: cOSS_EXE_TASK__CFG__SEARCH_DEPTH, SQBR_RIGHT: ], SEMICOLON: ;, IDENTIFIER: nS32, IDENTIFIER: l_nLevel, SEMICOLON: ;, IDENTIFIER: l_uResult, ASSIGN: =, IDENTIFIER: cERR__CODE__NOK, SEMICOLON: ;, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psThis, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_nLevel, ASSIGN: =, NUMBER: 0, SEMICOLON: ;, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: mOSS_EXE_TASK__BUFFER_FROM_HANDLE, BR_LEFT: (, IDENTIFIER: i_psThis, ARROW: ->, IDENTIFIER: i_chCurrent, BR_RIGHT: ), SEMICOLON: ;, DO: do, CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalEnter, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_task_Suspend, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: sApi, DOT: ., IDENTIFIER: i_psProc, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sProc, DOT: ., IDENTIFIER: bRunning, ASSIGN: =, FALSE: false, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: l_psTask, ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: psChild, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: l_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_nLevel, PLUS_ASSIGN: +=, NUMBER: 1, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: cOSS_EXE_TASK__CFG__SEARCH_DEPTH, GT: >, IDENTIFIER: l_nLevel, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: l_psTask, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_sThis, DOT: ., IDENTIFIER: i_chCurrent, ASSIGN: =, IDENTIFIER: mOSS_EXE_TASK__HANDLE_FROM_BUFFER, BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sTask, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_uResult, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_exe_task_Destroy, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_sThis, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: psNext, SEMICOLON: ;, IDENTIFIER: oss_mem_blck_Flush, BR_LEFT: (, DOT: ., IDENTIFIER: i_psTask, ASSIGN: =, BW_AND: &, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: oss_mem_Free, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: sStack, DOT: ., IDENTIFIER: panBase, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: oss_mem_Free, BR_LEFT: (, DOT: ., IDENTIFIER: i_panDst, ASSIGN: =, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: l_psTask, SEMICOLON: ;, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_nLevel, MINUS_ASSIGN: -=, NUMBER: 1, SEMICOLON: ;, IF: if, BR_LEFT: (, NUMBER: 0, LT_EQ: <=, IDENTIFIER: l_nLevel, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ASSIGN: =, BR_LEFT: (, IDENTIFIER: psOssExeProc_Task, BR_RIGHT: ), IDENTIFIER: l_apsProc, SQBR_LEFT: [, IDENTIFIER: l_nLevel, SQBR_RIGHT: ], ARROW: ->, IDENTIFIER: sTask, DOT: ., IDENTIFIER: psNext, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalLeave, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, WHILE: while, BR_LEFT: (, NUMBER: 0, LT: <, IDENTIFIER: l_nLevel, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_uResult, ASSIGN: =, IDENTIFIER: cERR__CODE__OK, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, RETURN: return, IDENTIFIER: __CAST, BR_LEFT: (, IDENTIFIER: uErr_Code, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_uResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #if 0, IDENTIFIER: nU32, BR_LEFT: (, IDENTIFIER: oss_exe_proc_TaskAdd, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: pfVoid_Void, IDENTIFIER: i_pfMain, COMMA: ,, IDENTIFIER: nU32, IDENTIFIER: i_nPeriod, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: nU32, IDENTIFIER: l_nResult, SEMICOLON: ;, IDENTIFIER: nU32, IDENTIFIER: l_nTaskId, SEMICOLON: ;, IDENTIFIER: nF32, IDENTIFIER: l_nDelay, SEMICOLON: ;, IDENTIFIER: l_nResult, ASSIGN: =, NUMBER: 0, SEMICOLON: ;, IDENTIFIER: l_nDelay, ASSIGN: =, BR_LEFT: (, IDENTIFIER: nF32, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: i_nPeriod, MUL: *, IDENTIFIER: mpOSS_EXE_PROC__CHEST, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: nCountPerMs, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: l_nDelay, LT: <, IDENTIFIER: F32, BR_LEFT: (, NUMBER: 1.0, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_nDelay, ASSIGN: =, IDENTIFIER: F32, BR_LEFT: (, NUMBER: 1.0, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IDENTIFIER: mpOSS_EXE_PROC__CHEST, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: asTasks, SQBR_LEFT: [, IDENTIFIER: l_nTaskId, SQBR_RIGHT: ], DOT: ., IDENTIFIER: nPeriod, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC__CHEST, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: asTasks, SQBR_LEFT: [, IDENTIFIER: l_nTaskId, SQBR_RIGHT: ], DOT: ., IDENTIFIER: nDelay, ASSIGN: =, BR_LEFT: (, IDENTIFIER: utl_num_math_rnd_Floor, BR_LEFT: (, DOT: ., IDENTIFIER: i_nX, ASSIGN: =, IDENTIFIER: l_nDelay, PLUS: +, NUMBER: 95, BR_RIGHT: ), LT: <, IDENTIFIER: l_nDelay, BR_RIGHT: ), QUEST: ?, IDENTIFIER: utl_num_math_rnd_Ceil, BR_LEFT: (, DOT: ., IDENTIFIER: i_nX, ASSIGN: =, IDENTIFIER: l_nDelay, BR_RIGHT: ), COLON: :, IDENTIFIER: utl_num_math_rnd_Floor, BR_LEFT: (, DOT: ., IDENTIFIER: i_nX, ASSIGN: =, IDENTIFIER: l_nDelay, BR_RIGHT: ), SEMICOLON: ;, RETURN: return, IDENTIFIER: __CAST, BR_LEFT: (, IDENTIFIER: nU32, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_nResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // 0, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_DelayMs, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, COMMA: ,, IDENTIFIER: nU32, IDENTIFIER: i_nDelay, BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_task_DelayUs, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: i_psTask, COMMA: ,, IDENTIFIER: i_nDelay, MUL: *, NUMBER: 1000, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_DelayUs, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, COMMA: ,, IDENTIFIER: nU32, IDENTIFIER: i_nDelay, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: psOssExeTask, IDENTIFIER: l_psTask, SEMICOLON: ;, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, NUMBER: 0, NOT_EQ: !=, IDENTIFIER: i_nDelay, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: i_psTask, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalEnter, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalLeave, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nPrev, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nWait, ASSIGN: =, BR_LEFT: (, IDENTIFIER: nOssExeTimr, BR_RIGHT: ), IDENTIFIER: i_nDelay, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: eOSS_EXE_TASK__STATE__DELAY, SEMICOLON: ;, BR_LEFT: (, IDENTIFIER: oss_exe_task_Switch, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, IDENTIFIER: bB1, BR_LEFT: (, IDENTIFIER: oss_exe_task_IsDelayed, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: bB1, IDENTIFIER: l_bResult, SEMICOLON: ;, IDENTIFIER: l_bResult, ASSIGN: =, FALSE: false, SEMICOLON: ;, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_bResult, ASSIGN: =, BR_LEFT: (, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), MINUS: -, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nPrev, BR_RIGHT: ), GT_EQ: >=, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sTime, DOT: ., IDENTIFIER: nWait, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, RETURN: return, IDENTIFIER: CAST, BR_LEFT: (, IDENTIFIER: bB1, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_bResult, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Suspend, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__SUSPEND, NOT_EQ: !=, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: ePrev, ASSIGN: =, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, SEMICOLON: ;, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: eOSS_EXE_TASK__STATE__SUSPEND, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Resume, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, IDENTIFIER: CHECK_ASSERT, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__SUSPEND, EQ: ==, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: ePrev, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Schedule, BR_RIGHT: ), BR_LEFT: (, VOID: void, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: psOssExeTask, IDENTIFIER: l_psTask, SEMICOLON: ;, IDENTIFIER: bB1, IDENTIFIER: l_bRun, SEMICOLON: ;, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: bRunning, ASSIGN: =, TRUE: true, SEMICOLON: ;, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: FOR_EACH_PTR, BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, COMMA: ,, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: psNext, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, ASSIGN: =, IDENTIFIER: mOSS_EXE_TASK__PROF, BR_LEFT: (, DOT: ., IDENTIFIER: nTime, ASSIGN: =, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTime, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), COMMA: ,, DOT: ., IDENTIFIER: nTimePre, ASSIGN: =, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, COMMA: ,, DOT: ., IDENTIFIER: nDeltaMin, ASSIGN: =, NUMBER: 0xFFFFFFFF, COMMA: ,, DOT: ., IDENTIFIER: nDeltaMax, ASSIGN: =, NUMBER: 0, COMMA: ,, DOT: ., IDENTIFIER: nDeltaAvg, ASSIGN: =, NUMBER: 0, COMMA: ,, DOT: ., IDENTIFIER: nSwitchCnt, ASSIGN: =, NUMBER: 0, COMMA: ,, DOT: ., IDENTIFIER: bFirst, ASSIGN: =, TRUE: true, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, WHILE: while, BR_LEFT: (, TRUE: true, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, FALSE: false, SEMICOLON: ;, BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), BR_RIGHT: ), SQBR_LEFT: [, NUMBER: 0, SQBR_RIGHT: ], ASSIGN: =, IDENTIFIER: l_psTask, SEMICOLON: ;, SWITCH: switch, BR_LEFT: (, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), CURLBR_LEFT: {, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__RUN, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, TRUE: true, SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__DELAY, COLON: :, CURLBR_LEFT: {, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, BR_LEFT: (, IDENTIFIER: oss_exe_task_IsDelayed, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, ASSIGN: =, IDENTIFIER: eOSS_EXE_TASK__STATE__RUN, SEMICOLON: ;, IDENTIFIER: l_bRun, ASSIGN: =, TRUE: true, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #if (dOSS_MSG__CFG__USE_EVENT == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__EVNT, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__EVNT_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_evnt_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__EVNT_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_EVENT == 1), PREPROCESSOR: #if (dOSS_MSG__CFG__USE_SEMAPHORE == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__SEMA, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__SEMA_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_sema_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__SEMA_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_SEMAPHORE == 1), PREPROCESSOR: #if (dOSS_MSG__CFG__USE_MUTEX == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__MUTX, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__MUTX_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_mutx_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__MUTX_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_MUTEX == 1), PREPROCESSOR: #if (dOSS_MSG__CFG__USE_LIST == 1), CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOEMP, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOEMP_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_list_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOEMP_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, COMMA: ,, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOFUL, COLON: :, CASE: case, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOFUL_DELAY, COLON: :, CURLBR_LEFT: {, IDENTIFIER: l_bRun, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_msg_list_Schedule, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: l_psTask, COMMA: ,, BR_LEFT: (, IDENTIFIER: eOSS_EXE_TASK__STATE__LIST_NOFUL_DELAY, EQ: ==, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sState, DOT: ., IDENTIFIER: eCurr, BR_RIGHT: ), QUEST: ?, TRUE: true, COLON: :, FALSE: false, COMMA: ,, TRUE: true, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_MSG__CFG__USE_LIST == 1), DEFAULT: default, COLON: :, CURLBR_LEFT: {, CURLBR_RIGHT: }, BREAK: break, SEMICOLON: ;, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: l_bRun, BR_RIGHT: ), CURLBR_LEFT: {, DO: do, CURLBR_LEFT: {, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: nOssExeTimr, IDENTIFIER: l_nTimePre, SEMICOLON: ;, IDENTIFIER: l_nTimePre, ASSIGN: =, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), IDENTIFIER: nOssExeTimr, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, IF: if, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: bFirst, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: bFirst, ASSIGN: =, FALSE: false, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, ASSIGN: =, IDENTIFIER: l_nTimePre, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, IDENTIFIER: l_nTimeDelta, ASSIGN: =, IDENTIFIER: l_nTimePre, MINUS: -, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTimePre, ASSIGN: =, IDENTIFIER: l_nTimePre, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaAvg, PLUS_ASSIGN: +=, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nSwitchCnt, PLUS_ASSIGN: +=, NUMBER: 1, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMin, GT: >, IDENTIFIER: l_nTimeDelta, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMin, ASSIGN: =, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, IF: if, BR_LEFT: (, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMax, LT: <, IDENTIFIER: l_nTimeDelta, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nDeltaMax, ASSIGN: =, IDENTIFIER: l_nTimeDelta, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER_TIME == 1), PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IF: if, BR_LEFT: (, NUMBER: 0, EQ: ==, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Long, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, NUMBER: 1, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: sProfiler, DOT: ., IDENTIFIER: nTime, PLUS_ASSIGN: +=, BR_LEFT: (, BR_LEFT: (, IDENTIFIER: oss_sys_tick_CountGet, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), MINUS: -, IDENTIFIER: l_nTimePre, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PROFILER == 1), CURLBR_RIGHT: }, WHILE: while, BR_LEFT: (, FALSE: false, BR_RIGHT: ), SEMICOLON: ;, PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, PREPROCESSOR: #else // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), IDENTIFIER: l_bRun, ASSIGN: =, FALSE: false, SEMICOLON: ;, PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_PRIORITY == 1), CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, FALSE: false, EQ: ==, IDENTIFIER: l_bRun, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: l_psTask, ARROW: ->, IDENTIFIER: psNext, SEMICOLON: ;, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: l_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: l_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: psThis, ARROW: ->, IDENTIFIER: psChild, SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, CURLBR_RIGHT: }, VOID: void, BR_LEFT: (, IDENTIFIER: oss_exe_task_Switch, BR_RIGHT: ), BR_LEFT: (, IDENTIFIER: psOssExeTask, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, IDENTIFIER: NULL, EQ: ==, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalEnter, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, IF: if, BR_LEFT: (, BR_LEFT: (, FALSE: false, NOT_EQ: !=, IDENTIFIER: mpOSS_EXE_PROC, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: bRunning, BR_RIGHT: ), PREPROCESSOR: #if (dOSS_EXE_TASK__CFG__USE_INTERRUPT == 1), AND: &&, BR_LEFT: (, NUMBER: 0, EQ: ==, IDENTIFIER: mpOSS_EXE_RTOS, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCritical, DOT: ., IDENTIFIER: nCount, BR_RIGHT: ), PREPROCESSOR: #endif // (dOSS_EXE_TASK__CFG__USE_INTERRUPT == 1), BR_RIGHT: ), CURLBR_LEFT: {, IDENTIFIER: i_psTask, ASSIGN: =, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, BR_LEFT: (, IDENTIFIER: oss_exe_rtos_CriticalLeave, BR_RIGHT: ), BR_LEFT: (, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, IF: if, BR_LEFT: (, IDENTIFIER: NULL, NOT_EQ: !=, IDENTIFIER: i_psTask, BR_RIGHT: ), CURLBR_LEFT: {, IF: if, BR_LEFT: (, NUMBER: 0, EQ: ==, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Set, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: i_psTask, ARROW: ->, IDENTIFIER: sCntx, BR_RIGHT: ), BR_RIGHT: ), CURLBR_LEFT: {, BR_LEFT: (, IDENTIFIER: mcu_cpu_jmp_Long, BR_RIGHT: ), BR_LEFT: (, BW_AND: &, IDENTIFIER: mpOSS_EXE_TASK, BR_LEFT: (, BR_RIGHT: ), ARROW: ->, IDENTIFIER: sCntx, COMMA: ,, NUMBER: 1, BR_RIGHT: ), SEMICOLON: ;, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, ELSE: else, CURLBR_LEFT: {, CURLBR_RIGHT: }, CURLBR_RIGHT: }, PREPROCESSOR: #if defined(EGOS_SRC_INC_ITOR), PREPROCESSOR: #include "oss_exe_task_demo.c", PREPROCESSOR: #include "oss_exe_task_prof.c", PREPROCESSOR: #endif // defined(EGOS_SRC_INC_ITOR), EOF: EOF]'

Ok, enough for this one.

Also several warning like :

14:08:04.575 WARN - [E:\ERCO-DKOCH_DATA\1133_EGOS\SRC\src\egos_oss\oss_exe_task_.c:556]: skip declaration: if ( ( ( 0 ) ) != i_psApiTask -> i_psProc ) {
14:08:04.575 WARN - [E:\ERCO-DKOCH_DATA\1133_EGOS\SRC\src\egos_oss\oss_exe_task_.c:559]: syntax error: l_psProcCurr ->

Thanks for your attention

@ivangalkin
Copy link
Contributor

Hi @Kochise and thank you for your detailed investigation

@guwirth I already raised several complains about our preprocessor (#1547, #1528) and was lucky enough to modify the ExpressionEvaluator (#1517). In general I believe, that the CxxPreprocessor & ExpressionEvaluator are a permanent source of warnings/errors with almost no value for the analysis/metrics. We have to simplify it.

W.r.t. this particular issue: if I remember correctly the preprocessor tries to build an AST immediately while evaluation of macros/directives. This works well for self-contained macros like...

#define SUM(a, b) ((a) + (b))

... where the right-hand-side of a macro is a parseable AST sub-tree. If it's not - there will be a syntax error (most probably a false-positive one). Not sure, but the same problem might appear if the code of #if/#else branches cannot be interpreted in an isolated manner.

int values[] = { 0, 1, 2, 3
#if 1
, 99 };
#else
};
#endif

In my opinion the preprocessor should not create an AST directly, but rather perform some basic text (token) substitution. Only after that the real AST parsing has to be done. Obviously this would require a massive rework. I am not sure if it's really worth it.

@Kochise
Copy link
Contributor Author

Kochise commented Sep 3, 2018

That's well summed up, this is exactly the case I'm encountering, while all compilers (but Microsoft's) works well and accept sub-trees.

The last "array" is pretty well what is common in embedded development with huge conditional compilation tricks to configure/limit memory consumption. You can always duplicate large chunks of code that would be parsed correctly, but maintenance becomes rapidly hard.

Btw I would have written it that way to avoid closing bracket twice :

int values[] = { 0, 1, 2, 3
#if 1
, 99
#else
#endif
};

@guwirth
Copy link
Collaborator

guwirth commented Nov 6, 2018

In my opinion the preprocessor should not create an AST directly, but rather perform some basic text (token) substitution. Only after that the real AST parsing has to be done. Obviously this would require a massive rework. I am not sure if it's really worth it.

@ivangalkin I didn't wrote this part but my understanding was:

token stream => Preprocessor Parser => Preprocessor AST & handling of includes, macros => token stream => CPP Parser => CPP AST

@Kochise
Copy link
Contributor Author

Kochise commented Nov 7, 2018

Provided it performs mostly like a real preprocessor/compiler and get the job done, I'm happy with that.

@Kochise
Copy link
Contributor Author

Kochise commented Nov 7, 2018

Btw, that's basically the same problem I'm facing with 'Doxygen' using a custom made parser that fails to analyse my code correctly, while 'DoxyPress', a 'Doxygen' fork using 'clang' as parser, works well. Perhaps you should consider using 'clang' as parser as well ?

@guwirth
Copy link
Collaborator

guwirth commented Nov 30, 2020

tested with cxx 1.3x and SQ 7.9.x => working. Close this issue.

@guwirth guwirth closed this as completed Nov 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

3 participants